范围函数和操作符
最近更新时间: 2024-10-17 17:10:00
范围操作符
范围类型可用的操作符:
操作符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
@> | 包含范围/元素 |
<@ | 范围/元素被包含 |
&& | 重叠 |
<< | 严格左部 |
>> | 严格右部 |
&< | 不超过右部 |
&> | 不超过左部 |
-|- | 相邻 |
+ | 并 |
* | 交 |
- | 差 |
示例:
postgres=# SELECT int4range(1,5) = '[1,4]'::int4range;
?column?
----------
t
(1 row)
postgres=# SELECT numrange(1.1,2.2) <> numrange(1.1,2.3);
?column?
----------
t
(1 row)
postgres=# SELECT int4range(2,4) @> int4range(2,3);
?column?
----------
t
(1 row)
postgres=# SELECT numrange(5,15) + numrange(10,20);
?column?
----------
[5,20)
(1 row)
postgres=# SELECT int8range(5,15) * int8range(10,20);
?column?
----------
[10,15)
(1 row)
范围函数
函数 | 返回类型 | 描述 |
---|---|---|
lower(anyrange) | 范围的元素类型 | 范围的下界 |
upper(anyrange) | 范围的元素类型 | 范围的上界 |
isempty(anyrange) | bool | 范围是否为空 |
lower_inc(anyrange) | bool | 下界是否包含在内 |
upper_inc(anyrange) | bool | 上界是否包含在内 |
lower_inf(anyrange) | bool | 下界是否无限 |
upper_inf(anyrange) | bool | 上界是否无限 |
range_merge(anyrange, anyrange) | anyrange | 最小范围其中包含两个给定范围 |
示例:
postgres=# SELECT lower(numrange(1.1,2.2));
lower
-------
1.1
(1 row)
postgres=# SELECT upper(numrange(1.1,2.2));
upper
-------
2.2
(1 row)
postgres=# SELECT isempty(numrange(1.1,2.2));
isempty
---------
f
(1 row)
postgres=# SELECT lower_inc(numrange(1.1,2.2));
lower_inc
-----------
t
(1 row)
postgres=# SELECT lower_inf('(,)'::daterange);
lower_inf
-----------
t
(1 row)
postgres=# SELECT range_merge('[1,2)'::int4range, '[3,4)'::int4range);
range_merge
-------------
[1,4)
(1 row)